# Preface

In the world of computing, the 1990s may rightly be called the decade of Open Source software. From Linux to Perl, from palmtop to mainframe, the Open Source movement has left a mark in practically every niche of technology. This impact is especially strong in the commercially neglected world of mid-range server applications commonly needed by nonprofit organizations and small businesses.

The idea of mid-range servers was fairly rare in the first few decades of the computer age. Computers were expensive items used by large institutions such as banks and universities. Enormous time-sharing servers provided the computing power for entire companies. Much of the software running on these systems was as monolithic as the servers themselves. After all, because only one computer was serving several departments -- if not the whole organization -- that computer had to fulfill everyone's needs.

At the other end of the spectrum was the personal computer. With the PC revolution, you could find one computer for every household instead of one computer for an entire company. While these computers were easily powerful enough to satisfy the needs of a single user, a wide gulf still existed between the capabilities -- and the costs -- of personal computing and corporate computing.

The area where this gulf was most apparent was in data management. Database applications for large mainframe servers included every feature possible. Because of the multipurpose nature of this software, if any odd feature was needed by a single user, it was included. Database applications that satisfied those data management needs of the individual user emerged. However, where mainframe databases were too massive for mid-range needs, personal databases were too narrow.

In the first half of the 1990s, the "lowly" personal computer had advanced to the point where it was actually more powerful than the mainframe computers of yesteryear. While hardware was no longer a barrier to mid-range computing, the lack of affordable software was. To meet the data storage needs of a nonprofit organization or small business, you needed an affordable server operating system and an affordable database management system. The introduction of cheap and powerful server operating systems like FreeBSD and Linux helped solve the operating system side of that equation.

MySQL and mSQL are two solutions that solve the database management side of the equation. They are powerful and flexible while at the same time lightweight and efficient. MySQL, in particular, packs a large feature set into a very small and fast engine. While neither database engine has anywhere near the full feature set of expensive corporate databases, they easily have enough of a feature set to meet the needs of mid-range database management.

## 0.1. Audience

This book is primarily for two classes of readers. The most obvious is the reader interested in using MySQL and mSQL from either a database administration perspective or from a database programmer perspective. In addition, anyone who wants to learn about relational database administration and programming without paying out the nose for a license from one of the big guys will find MySQL or mSQL an excellent starting point. If MySQL or mSQL is your starting point, then this book is your guide.

From a database administrator's perspective, we cover the basic methods of creating and managing databases and tables in MySQL and mSQL. We go beyond the simple and provide performance tuning and troubleshooting tips to help you make sure your MySQL and mSQL applications are running their best. Finally, all of the tools that come with MySQL and mSQL are covered in detail. We assume no prior knowledge of SQL or relational databases.

Database programmers will find that we have covered all of the major programming interfaces from the most popular client/server and web programming languages. When we cover the interface for a particular language, we assume that the reader has a basic grasp of the language in question. For example, in the Java chapter, we assume that the reader knows how to write basic Java applications and now wants to learn how to make those Java applications talk to a MySQL or mSQL database.

The immense popularity of MySQL and mSQL on the Web has made it natural to provide a focus on CGI programming with MySQL and mSQL. Web developers should therefore find this book useful in describing how to drive their web sites with a MySQL or mSQL database. For these chapters, very little CGI knowledge is needed, but we still assume that the reader is familiar with the basics of the programming language in question.

Copyright © 2001 O'Reilly & Associates. All rights reserved.